<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>fit_circle_contour_xld [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_xld.html">XLD</a> / <a href="toc_xld_features.html">特征</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">fit_circle_contour_xld</span><span data-if="c" style="display:none;">fit_circle_contour_xld</span><span data-if="cpp" style="display:none;">FitCircleContourXld</span><span data-if="dotnet" style="display:none;">FitCircleContourXld</span><span data-if="python" style="display:none;">fit_circle_contour_xld</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">fit_circle_contour_xld</span><span data-if="c" style="display:none;">fit_circle_contour_xld</span><span data-if="cpp" style="display:none;">FitCircleContourXld</span><span data-if="dotnet" style="display:none;">FitCircleContourXld</span><span data-if="python" style="display:none;">fit_circle_contour_xld</span></code> — Approximate XLD contours by circles.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>fit_circle_contour_xld</b>(<a href="#Contours"><i>Contours</i></a> :  : <a href="#Algorithm"><i>Algorithm</i></a>, <a href="#MaxNumPoints"><i>MaxNumPoints</i></a>, <a href="#MaxClosureDist"><i>MaxClosureDist</i></a>, <a href="#ClippingEndPoints"><i>ClippingEndPoints</i></a>, <a href="#Iterations"><i>Iterations</i></a>, <a href="#ClippingFactor"><i>ClippingFactor</i></a> : <a href="#Row"><i>Row</i></a>, <a href="#Column"><i>Column</i></a>, <a href="#Radius"><i>Radius</i></a>, <a href="#StartPhi"><i>StartPhi</i></a>, <a href="#EndPhi"><i>EndPhi</i></a>, <a href="#PointOrder"><i>PointOrder</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>fit_circle_contour_xld</b>(const Hobject <a href="#Contours"><i>Contours</i></a>, const char* <a href="#Algorithm"><i>Algorithm</i></a>, const Hlong <a href="#MaxNumPoints"><i>MaxNumPoints</i></a>, double <a href="#MaxClosureDist"><i>MaxClosureDist</i></a>, const Hlong <a href="#ClippingEndPoints"><i>ClippingEndPoints</i></a>, const Hlong <a href="#Iterations"><i>Iterations</i></a>, double <a href="#ClippingFactor"><i>ClippingFactor</i></a>, double* <a href="#Row"><i>Row</i></a>, double* <a href="#Column"><i>Column</i></a>, double* <a href="#Radius"><i>Radius</i></a>, double* <a href="#StartPhi"><i>StartPhi</i></a>, double* <a href="#EndPhi"><i>EndPhi</i></a>, char* <a href="#PointOrder"><i>PointOrder</i></a>)</code></p>
<p>
<code>Herror <b>T_fit_circle_contour_xld</b>(const Hobject <a href="#Contours"><i>Contours</i></a>, const Htuple <a href="#Algorithm"><i>Algorithm</i></a>, const Htuple <a href="#MaxNumPoints"><i>MaxNumPoints</i></a>, const Htuple <a href="#MaxClosureDist"><i>MaxClosureDist</i></a>, const Htuple <a href="#ClippingEndPoints"><i>ClippingEndPoints</i></a>, const Htuple <a href="#Iterations"><i>Iterations</i></a>, const Htuple <a href="#ClippingFactor"><i>ClippingFactor</i></a>, Htuple* <a href="#Row"><i>Row</i></a>, Htuple* <a href="#Column"><i>Column</i></a>, Htuple* <a href="#Radius"><i>Radius</i></a>, Htuple* <a href="#StartPhi"><i>StartPhi</i></a>, Htuple* <a href="#EndPhi"><i>EndPhi</i></a>, Htuple* <a href="#PointOrder"><i>PointOrder</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>FitCircleContourXld</b>(const HObject&amp; <a href="#Contours"><i>Contours</i></a>, const HTuple&amp; <a href="#Algorithm"><i>Algorithm</i></a>, const HTuple&amp; <a href="#MaxNumPoints"><i>MaxNumPoints</i></a>, const HTuple&amp; <a href="#MaxClosureDist"><i>MaxClosureDist</i></a>, const HTuple&amp; <a href="#ClippingEndPoints"><i>ClippingEndPoints</i></a>, const HTuple&amp; <a href="#Iterations"><i>Iterations</i></a>, const HTuple&amp; <a href="#ClippingFactor"><i>ClippingFactor</i></a>, HTuple* <a href="#Row"><i>Row</i></a>, HTuple* <a href="#Column"><i>Column</i></a>, HTuple* <a href="#Radius"><i>Radius</i></a>, HTuple* <a href="#StartPhi"><i>StartPhi</i></a>, HTuple* <a href="#EndPhi"><i>EndPhi</i></a>, HTuple* <a href="#PointOrder"><i>PointOrder</i></a>)</code></p>
<p>
<code>void <a href="HXLDCont.html">HXLDCont</a>::<b>FitCircleContourXld</b>(const HString&amp; <a href="#Algorithm"><i>Algorithm</i></a>, Hlong <a href="#MaxNumPoints"><i>MaxNumPoints</i></a>, double <a href="#MaxClosureDist"><i>MaxClosureDist</i></a>, Hlong <a href="#ClippingEndPoints"><i>ClippingEndPoints</i></a>, Hlong <a href="#Iterations"><i>Iterations</i></a>, double <a href="#ClippingFactor"><i>ClippingFactor</i></a>, HTuple* <a href="#Row"><i>Row</i></a>, HTuple* <a href="#Column"><i>Column</i></a>, HTuple* <a href="#Radius"><i>Radius</i></a>, HTuple* <a href="#StartPhi"><i>StartPhi</i></a>, HTuple* <a href="#EndPhi"><i>EndPhi</i></a>, HTuple* <a href="#PointOrder"><i>PointOrder</i></a>) const</code></p>
<p>
<code>void <a href="HXLDCont.html">HXLDCont</a>::<b>FitCircleContourXld</b>(const HString&amp; <a href="#Algorithm"><i>Algorithm</i></a>, Hlong <a href="#MaxNumPoints"><i>MaxNumPoints</i></a>, double <a href="#MaxClosureDist"><i>MaxClosureDist</i></a>, Hlong <a href="#ClippingEndPoints"><i>ClippingEndPoints</i></a>, Hlong <a href="#Iterations"><i>Iterations</i></a>, double <a href="#ClippingFactor"><i>ClippingFactor</i></a>, double* <a href="#Row"><i>Row</i></a>, double* <a href="#Column"><i>Column</i></a>, double* <a href="#Radius"><i>Radius</i></a>, double* <a href="#StartPhi"><i>StartPhi</i></a>, double* <a href="#EndPhi"><i>EndPhi</i></a>, HString* <a href="#PointOrder"><i>PointOrder</i></a>) const</code></p>
<p>
<code>void <a href="HXLDCont.html">HXLDCont</a>::<b>FitCircleContourXld</b>(const char* <a href="#Algorithm"><i>Algorithm</i></a>, Hlong <a href="#MaxNumPoints"><i>MaxNumPoints</i></a>, double <a href="#MaxClosureDist"><i>MaxClosureDist</i></a>, Hlong <a href="#ClippingEndPoints"><i>ClippingEndPoints</i></a>, Hlong <a href="#Iterations"><i>Iterations</i></a>, double <a href="#ClippingFactor"><i>ClippingFactor</i></a>, double* <a href="#Row"><i>Row</i></a>, double* <a href="#Column"><i>Column</i></a>, double* <a href="#Radius"><i>Radius</i></a>, double* <a href="#StartPhi"><i>StartPhi</i></a>, double* <a href="#EndPhi"><i>EndPhi</i></a>, HString* <a href="#PointOrder"><i>PointOrder</i></a>) const</code></p>
<p>
<code>void <a href="HXLDCont.html">HXLDCont</a>::<b>FitCircleContourXld</b>(const wchar_t* <a href="#Algorithm"><i>Algorithm</i></a>, Hlong <a href="#MaxNumPoints"><i>MaxNumPoints</i></a>, double <a href="#MaxClosureDist"><i>MaxClosureDist</i></a>, Hlong <a href="#ClippingEndPoints"><i>ClippingEndPoints</i></a>, Hlong <a href="#Iterations"><i>Iterations</i></a>, double <a href="#ClippingFactor"><i>ClippingFactor</i></a>, double* <a href="#Row"><i>Row</i></a>, double* <a href="#Column"><i>Column</i></a>, double* <a href="#Radius"><i>Radius</i></a>, double* <a href="#StartPhi"><i>StartPhi</i></a>, double* <a href="#EndPhi"><i>EndPhi</i></a>, HString* <a href="#PointOrder"><i>PointOrder</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>FitCircleContourXld</b>(<a href="HObject.html">HObject</a> <a href="#Contours"><i>contours</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Algorithm"><i>algorithm</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MaxNumPoints"><i>maxNumPoints</i></a>, <a href="HTuple.html">HTuple</a> <a href="#MaxClosureDist"><i>maxClosureDist</i></a>, <a href="HTuple.html">HTuple</a> <a href="#ClippingEndPoints"><i>clippingEndPoints</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Iterations"><i>iterations</i></a>, <a href="HTuple.html">HTuple</a> <a href="#ClippingFactor"><i>clippingFactor</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Row"><i>row</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Column"><i>column</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Radius"><i>radius</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#StartPhi"><i>startPhi</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#EndPhi"><i>endPhi</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#PointOrder"><i>pointOrder</i></a>)</code></p>
<p>
<code>void <a href="HXLDCont.html">HXLDCont</a>.<b>FitCircleContourXld</b>(string <a href="#Algorithm"><i>algorithm</i></a>, int <a href="#MaxNumPoints"><i>maxNumPoints</i></a>, double <a href="#MaxClosureDist"><i>maxClosureDist</i></a>, int <a href="#ClippingEndPoints"><i>clippingEndPoints</i></a>, int <a href="#Iterations"><i>iterations</i></a>, double <a href="#ClippingFactor"><i>clippingFactor</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Row"><i>row</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Column"><i>column</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Radius"><i>radius</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#StartPhi"><i>startPhi</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#EndPhi"><i>endPhi</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#PointOrder"><i>pointOrder</i></a>)</code></p>
<p>
<code>void <a href="HXLDCont.html">HXLDCont</a>.<b>FitCircleContourXld</b>(string <a href="#Algorithm"><i>algorithm</i></a>, int <a href="#MaxNumPoints"><i>maxNumPoints</i></a>, double <a href="#MaxClosureDist"><i>maxClosureDist</i></a>, int <a href="#ClippingEndPoints"><i>clippingEndPoints</i></a>, int <a href="#Iterations"><i>iterations</i></a>, double <a href="#ClippingFactor"><i>clippingFactor</i></a>, out double <a href="#Row"><i>row</i></a>, out double <a href="#Column"><i>column</i></a>, out double <a href="#Radius"><i>radius</i></a>, out double <a href="#StartPhi"><i>startPhi</i></a>, out double <a href="#EndPhi"><i>endPhi</i></a>, out string <a href="#PointOrder"><i>pointOrder</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>fit_circle_contour_xld</b>(<a href="#Contours"><i>contours</i></a>: HObject, <a href="#Algorithm"><i>algorithm</i></a>: str, <a href="#MaxNumPoints"><i>max_num_points</i></a>: int, <a href="#MaxClosureDist"><i>max_closure_dist</i></a>: float, <a href="#ClippingEndPoints"><i>clipping_end_points</i></a>: int, <a href="#Iterations"><i>iterations</i></a>: int, <a href="#ClippingFactor"><i>clipping_factor</i></a>: float) -&gt; Tuple[Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[float], Sequence[str]]</code></p>
<p>
<code>def <b>fit_circle_contour_xld_s</b>(<a href="#Contours"><i>contours</i></a>: HObject, <a href="#Algorithm"><i>algorithm</i></a>: str, <a href="#MaxNumPoints"><i>max_num_points</i></a>: int, <a href="#MaxClosureDist"><i>max_closure_dist</i></a>: float, <a href="#ClippingEndPoints"><i>clipping_end_points</i></a>: int, <a href="#Iterations"><i>iterations</i></a>: int, <a href="#ClippingFactor"><i>clipping_factor</i></a>: float) -&gt; Tuple[float, float, float, float, float, str]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">fit_circle_contour_xld</span><span data-if="c" style="display:none">fit_circle_contour_xld</span><span data-if="cpp" style="display:none">FitCircleContourXld</span><span data-if="com" style="display:none">FitCircleContourXld</span><span data-if="dotnet" style="display:none">FitCircleContourXld</span><span data-if="python" style="display:none">fit_circle_contour_xld</span></code> approximates the XLD contours
<a href="#Contours"><i><code><span data-if="hdevelop" style="display:inline">Contours</span><span data-if="c" style="display:none">Contours</span><span data-if="cpp" style="display:none">Contours</span><span data-if="com" style="display:none">Contours</span><span data-if="dotnet" style="display:none">contours</span><span data-if="python" style="display:none">contours</span></code></i></a> by circles.  It does not perform a segmentation of
the input contours.  Thus, one has to make sure that each contour
corresponds to one and only one circle.  该算子 returns for
each contour the center (<a href="#Row"><i><code><span data-if="hdevelop" style="display:inline">Row</span><span data-if="c" style="display:none">Row</span><span data-if="cpp" style="display:none">Row</span><span data-if="com" style="display:none">Row</span><span data-if="dotnet" style="display:none">row</span><span data-if="python" style="display:none">row</span></code></i></a>, <a href="#Column"><i><code><span data-if="hdevelop" style="display:inline">Column</span><span data-if="c" style="display:none">Column</span><span data-if="cpp" style="display:none">Column</span><span data-if="com" style="display:none">Column</span><span data-if="dotnet" style="display:none">column</span><span data-if="python" style="display:none">column</span></code></i></a>), and the
<a href="#Radius"><i><code><span data-if="hdevelop" style="display:inline">Radius</span><span data-if="c" style="display:none">Radius</span><span data-if="cpp" style="display:none">Radius</span><span data-if="com" style="display:none">Radius</span><span data-if="dotnet" style="display:none">radius</span><span data-if="python" style="display:none">radius</span></code></i></a>.
</p>
<p>The algorithm used for the fitting of circles can be selected via
<a href="#Algorithm"><i><code><span data-if="hdevelop" style="display:inline">Algorithm</span><span data-if="c" style="display:none">Algorithm</span><span data-if="cpp" style="display:none">Algorithm</span><span data-if="com" style="display:none">Algorithm</span><span data-if="dotnet" style="display:none">algorithm</span><span data-if="python" style="display:none">algorithm</span></code></i></a>:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'algebraic'</span><span data-if="c" style="display:none">"algebraic"</span><span data-if="cpp" style="display:none">"algebraic"</span><span data-if="com" style="display:none">"algebraic"</span><span data-if="dotnet" style="display:none">"algebraic"</span><span data-if="python" style="display:none">"algebraic"</span></i></b></dt>
<dd>
<p>

This approach minimizes the algebraic distance between the contour
points and the resulting circle.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'ahuber'</span><span data-if="c" style="display:none">"ahuber"</span><span data-if="cpp" style="display:none">"ahuber"</span><span data-if="com" style="display:none">"ahuber"</span><span data-if="dotnet" style="display:none">"ahuber"</span><span data-if="python" style="display:none">"ahuber"</span></i></b></dt>
<dd>
<p>

Similar to <i><span data-if="hdevelop" style="display:inline">'algebraic'</span><span data-if="c" style="display:none">"algebraic"</span><span data-if="cpp" style="display:none">"algebraic"</span><span data-if="com" style="display:none">"algebraic"</span><span data-if="dotnet" style="display:none">"algebraic"</span><span data-if="python" style="display:none">"algebraic"</span></i>. Here the contour points are weighted to
decrease the impact of outliers based on the approach of Huber
(see below).
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'atukey'</span><span data-if="c" style="display:none">"atukey"</span><span data-if="cpp" style="display:none">"atukey"</span><span data-if="com" style="display:none">"atukey"</span><span data-if="dotnet" style="display:none">"atukey"</span><span data-if="python" style="display:none">"atukey"</span></i></b></dt>
<dd>
<p>

Similar to <i><span data-if="hdevelop" style="display:inline">'algebraic'</span><span data-if="c" style="display:none">"algebraic"</span><span data-if="cpp" style="display:none">"algebraic"</span><span data-if="com" style="display:none">"algebraic"</span><span data-if="dotnet" style="display:none">"algebraic"</span><span data-if="python" style="display:none">"algebraic"</span></i>. Here the contour points are weighted
and outliers are ignored based
on the approach of Tukey
(see below).
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'geometric'</span><span data-if="c" style="display:none">"geometric"</span><span data-if="cpp" style="display:none">"geometric"</span><span data-if="com" style="display:none">"geometric"</span><span data-if="dotnet" style="display:none">"geometric"</span><span data-if="python" style="display:none">"geometric"</span></i></b></dt>
<dd>
<p>

This approach minimizes the geometric distance
between the contour points and the resulting circle.
The distance measure is statistically optimal, but takes more
computational time.
This option is recommended if the contour
points are considerably distorted by noise.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'geohuber'</span><span data-if="c" style="display:none">"geohuber"</span><span data-if="cpp" style="display:none">"geohuber"</span><span data-if="com" style="display:none">"geohuber"</span><span data-if="dotnet" style="display:none">"geohuber"</span><span data-if="python" style="display:none">"geohuber"</span></i></b></dt>
<dd>
<p>

Similar to <i><span data-if="hdevelop" style="display:inline">'geometric'</span><span data-if="c" style="display:none">"geometric"</span><span data-if="cpp" style="display:none">"geometric"</span><span data-if="com" style="display:none">"geometric"</span><span data-if="dotnet" style="display:none">"geometric"</span><span data-if="python" style="display:none">"geometric"</span></i>. Here the contour points are weighted
to decrease the impact of outliers based on
the approach of Huber (see below).
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'geotukey'</span><span data-if="c" style="display:none">"geotukey"</span><span data-if="cpp" style="display:none">"geotukey"</span><span data-if="com" style="display:none">"geotukey"</span><span data-if="dotnet" style="display:none">"geotukey"</span><span data-if="python" style="display:none">"geotukey"</span></i></b></dt>
<dd>
<p>

Similar to <i><span data-if="hdevelop" style="display:inline">'geometric'</span><span data-if="c" style="display:none">"geometric"</span><span data-if="cpp" style="display:none">"geometric"</span><span data-if="com" style="display:none">"geometric"</span><span data-if="dotnet" style="display:none">"geometric"</span><span data-if="python" style="display:none">"geometric"</span></i>. Here the contour points are weighted
and outliers are ignored based on
the approach of Tukey (see below).
</p>
</dd>
</dl>
<p>For '*huber' and '*tukey' a robust error statistics is used to estimate the
standard deviation of the distances from the contour points <em>without</em>
outliers from the approximating circle.  The parameter
<a href="#ClippingFactor"><i><code><span data-if="hdevelop" style="display:inline">ClippingFactor</span><span data-if="c" style="display:none">ClippingFactor</span><span data-if="cpp" style="display:none">ClippingFactor</span><span data-if="com" style="display:none">ClippingFactor</span><span data-if="dotnet" style="display:none">clippingFactor</span><span data-if="python" style="display:none">clipping_factor</span></code></i></a> (a scaling factor for the standard deviation)
controls the amount of outliers: the smaller the value chosen for
<a href="#ClippingFactor"><i><code><span data-if="hdevelop" style="display:inline">ClippingFactor</span><span data-if="c" style="display:none">ClippingFactor</span><span data-if="cpp" style="display:none">ClippingFactor</span><span data-if="com" style="display:none">ClippingFactor</span><span data-if="dotnet" style="display:none">clippingFactor</span><span data-if="python" style="display:none">clipping_factor</span></code></i></a> the more outliers are detected. In the Tukey
algorithm outliers are removed, whereas in the Huber algorithm
outliers are only damped, or more precisely they are weighted linearly.
Without any robust weighting the squares of the distances are taken as
error values in the optimization, i.e., a least square formulation.
In practice, the approach of Tukey is recommended.
</p>
<p>The parameter <a href="#Iterations"><i><code><span data-if="hdevelop" style="display:inline">Iterations</span><span data-if="c" style="display:none">Iterations</span><span data-if="cpp" style="display:none">Iterations</span><span data-if="com" style="display:none">Iterations</span><span data-if="dotnet" style="display:none">iterations</span><span data-if="python" style="display:none">iterations</span></code></i></a> specifies the number of iterations for the
algorithms <i><span data-if="hdevelop" style="display:inline">'algebraic'</span><span data-if="c" style="display:none">"algebraic"</span><span data-if="cpp" style="display:none">"algebraic"</span><span data-if="com" style="display:none">"algebraic"</span><span data-if="dotnet" style="display:none">"algebraic"</span><span data-if="python" style="display:none">"algebraic"</span></i>, <i><span data-if="hdevelop" style="display:inline">'ahuber'</span><span data-if="c" style="display:none">"ahuber"</span><span data-if="cpp" style="display:none">"ahuber"</span><span data-if="com" style="display:none">"ahuber"</span><span data-if="dotnet" style="display:none">"ahuber"</span><span data-if="python" style="display:none">"ahuber"</span></i> and <i><span data-if="hdevelop" style="display:inline">'atukey'</span><span data-if="c" style="display:none">"atukey"</span><span data-if="cpp" style="display:none">"atukey"</span><span data-if="com" style="display:none">"atukey"</span><span data-if="dotnet" style="display:none">"atukey"</span><span data-if="python" style="display:none">"atukey"</span></i>.
This parameter is ignored for the algorithms <i><span data-if="hdevelop" style="display:inline">'geometric'</span><span data-if="c" style="display:none">"geometric"</span><span data-if="cpp" style="display:none">"geometric"</span><span data-if="com" style="display:none">"geometric"</span><span data-if="dotnet" style="display:none">"geometric"</span><span data-if="python" style="display:none">"geometric"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'geohuber'</span><span data-if="c" style="display:none">"geohuber"</span><span data-if="cpp" style="display:none">"geohuber"</span><span data-if="com" style="display:none">"geohuber"</span><span data-if="dotnet" style="display:none">"geohuber"</span><span data-if="python" style="display:none">"geohuber"</span></i> and <i><span data-if="hdevelop" style="display:inline">'geotukey'</span><span data-if="c" style="display:none">"geotukey"</span><span data-if="cpp" style="display:none">"geotukey"</span><span data-if="com" style="display:none">"geotukey"</span><span data-if="dotnet" style="display:none">"geotukey"</span><span data-if="python" style="display:none">"geotukey"</span></i>.
If <a href="#Iterations"><i><code><span data-if="hdevelop" style="display:inline">Iterations</span><span data-if="c" style="display:none">Iterations</span><span data-if="cpp" style="display:none">Iterations</span><span data-if="com" style="display:none">Iterations</span><span data-if="dotnet" style="display:none">iterations</span><span data-if="python" style="display:none">iterations</span></code></i></a> is set to zero, the algorithm does
not perform iterative improvements on the fitted circle, but only checks if
the initial guess was already close enough depending on the chosen treatment
of outliers.
</p>
<p>To reduce the computational load, the fitting of circles can be
restricted to a subset of the contour points: If a value other than
<i>-1</i> is assigned to <a href="#MaxNumPoints"><i><code><span data-if="hdevelop" style="display:inline">MaxNumPoints</span><span data-if="c" style="display:none">MaxNumPoints</span><span data-if="cpp" style="display:none">MaxNumPoints</span><span data-if="com" style="display:none">MaxNumPoints</span><span data-if="dotnet" style="display:none">maxNumPoints</span><span data-if="python" style="display:none">max_num_points</span></code></i></a>, only up to
<a href="#MaxNumPoints"><i><code><span data-if="hdevelop" style="display:inline">MaxNumPoints</span><span data-if="c" style="display:none">MaxNumPoints</span><span data-if="cpp" style="display:none">MaxNumPoints</span><span data-if="com" style="display:none">MaxNumPoints</span><span data-if="dotnet" style="display:none">maxNumPoints</span><span data-if="python" style="display:none">max_num_points</span></code></i></a> points - uniformly distributed over the
contour - are used.
</p>
<p>For circular arcs, the points on the circle closest to the start
points and end points of the original contours are chosen as start
and end points.  The corresponding angles referring to the X-axis are
returned in <a href="#StartPhi"><i><code><span data-if="hdevelop" style="display:inline">StartPhi</span><span data-if="c" style="display:none">StartPhi</span><span data-if="cpp" style="display:none">StartPhi</span><span data-if="com" style="display:none">StartPhi</span><span data-if="dotnet" style="display:none">startPhi</span><span data-if="python" style="display:none">start_phi</span></code></i></a> and <a href="#EndPhi"><i><code><span data-if="hdevelop" style="display:inline">EndPhi</span><span data-if="c" style="display:none">EndPhi</span><span data-if="cpp" style="display:none">EndPhi</span><span data-if="com" style="display:none">EndPhi</span><span data-if="dotnet" style="display:none">endPhi</span><span data-if="python" style="display:none">end_phi</span></code></i></a>, see also
<a href="gen_ellipse_contour_xld.html"><code><span data-if="hdevelop" style="display:inline">gen_ellipse_contour_xld</span><span data-if="c" style="display:none">gen_ellipse_contour_xld</span><span data-if="cpp" style="display:none">GenEllipseContourXld</span><span data-if="com" style="display:none">GenEllipseContourXld</span><span data-if="dotnet" style="display:none">GenEllipseContourXld</span><span data-if="python" style="display:none">gen_ellipse_contour_xld</span></code></a>.  Contours, for which the distance
between their start points and their end points is less or equal
<a href="#MaxClosureDist"><i><code><span data-if="hdevelop" style="display:inline">MaxClosureDist</span><span data-if="c" style="display:none">MaxClosureDist</span><span data-if="cpp" style="display:none">MaxClosureDist</span><span data-if="com" style="display:none">MaxClosureDist</span><span data-if="dotnet" style="display:none">maxClosureDist</span><span data-if="python" style="display:none">max_closure_dist</span></code></i></a> are considered to be closed.  Thus, they are
approximated by circles instead of circular arcs.  Due to artifacts
in the pre-processing the start and end points of a contour might be
faulty. Therefore, it is possible to exclude
<a href="#ClippingEndPoints"><i><code><span data-if="hdevelop" style="display:inline">ClippingEndPoints</span><span data-if="c" style="display:none">ClippingEndPoints</span><span data-if="cpp" style="display:none">ClippingEndPoints</span><span data-if="com" style="display:none">ClippingEndPoints</span><span data-if="dotnet" style="display:none">clippingEndPoints</span><span data-if="python" style="display:none">clipping_end_points</span></code></i></a> points at the beginning and at the end of a
contour from the fitting of circles.  However, they are still used
for the determination of <a href="#StartPhi"><i><code><span data-if="hdevelop" style="display:inline">StartPhi</span><span data-if="c" style="display:none">StartPhi</span><span data-if="cpp" style="display:none">StartPhi</span><span data-if="com" style="display:none">StartPhi</span><span data-if="dotnet" style="display:none">startPhi</span><span data-if="python" style="display:none">start_phi</span></code></i></a> and <a href="#EndPhi"><i><code><span data-if="hdevelop" style="display:inline">EndPhi</span><span data-if="c" style="display:none">EndPhi</span><span data-if="cpp" style="display:none">EndPhi</span><span data-if="com" style="display:none">EndPhi</span><span data-if="dotnet" style="display:none">endPhi</span><span data-if="python" style="display:none">end_phi</span></code></i></a>.
</p>
<p>The minimum necessary number of contour points for fitting a circle
is three.
Therefore, it is required that the number of contour points is at least
<span title="1" style="vertical-align:-0.238652em" class="math"><!-- Created by MetaPost 1.902 on 2023.05.15:2033 --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="13.2214em" height="0.920463em" viewBox="0 0 211.541916 14.727402">
<!-- Original BoundingBox: -105.770966 -7.363693 105.770950 7.363708 -->
  <defs>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_67">
      <path style="fill-rule: evenodd;" d="M478.000000 -507.000000C431.000000 -552.000000,371.000000 -576.000000,305.000000 -576.000000C238.000000 -576.000000,179.000000 -550.000000,134.000000 -502.000000C91.000000 -456.000000,63.000000 -386.000000,63.000000 -325.000000L63.000000 -242.000000C63.000000 -107.000000,186.000000 16.000000,322.000000 16.000000C386.000000 16.000000,447.000000 -9.000000,496.000000 -55.000000C522.000000 -79.000000,534.000000 -96.000000,534.000000 -106.000000C534.000000 -117.000000,526.000000 -125.000000,514.000000 -125.000000C507.000000 -125.000000,503.000000 -123.000000,496.000000 -115.000000C442.000000 -51.000000,391.000000 -25.000000,322.000000 -25.000000C204.000000 -25.000000,104.000000 -128.000000,104.000000 -248.000000L104.000000 -319.000000C104.000000 -438.000000,194.000000 -535.000000,305.000000 -535.000000C394.000000 -535.000000,474.000000 -482.000000,478.000000 -421.000000C479.000000 -405.000000,486.000000 -397.000000,498.000000 -397.000000C512.000000 -397.000000,519.000000 -406.000000,519.000000 -424.000000L519.000000 -536.000000C519.000000 -554.000000,512.000000 -563.000000,499.000000 -563.000000C485.000000 -563.000000,478.000000 -554.000000,478.000000 -536.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_69">
      <path style="fill-rule: evenodd;" d="M165.000000 -272.000000L310.000000 -272.000000L310.000000 -227.000000C310.000000 -209.000000,317.000000 -200.000000,331.000000 -200.000000C344.000000 -200.000000,351.000000 -209.000000,351.000000 -227.000000L351.000000 -358.000000C351.000000 -376.000000,344.000000 -385.000000,331.000000 -385.000000C317.000000 -385.000000,310.000000 -376.000000,310.000000 -358.000000L310.000000 -313.000000L165.000000 -313.000000L165.000000 -522.000000L458.000000 -522.000000L458.000000 -424.000000C458.000000 -406.000000,465.000000 -397.000000,478.000000 -397.000000C492.000000 -397.000000,499.000000 -406.000000,499.000000 -424.000000L499.000000 -563.000000L70.000000 -563.000000C52.000000 -563.000000,43.000000 -556.000000,43.000000 -543.000000C43.000000 -529.000000,52.000000 -522.000000,70.000000 -522.000000L124.000000 -522.000000L124.000000 -41.000000L70.000000 -41.000000C52.000000 -41.000000,43.000000 -34.000000,43.000000 -21.000000C43.000000 -7.000000,52.000000 -0.000000,70.000000 -0.000000L520.000000 -0.000000L520.000000 -160.000000C520.000000 -178.000000,513.000000 -187.000000,500.000000 -187.000000C486.000000 -187.000000,479.000000 -178.000000,479.000000 -160.000000L479.000000 -41.000000L165.000000 -41.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_80">
      <path style="fill-rule: evenodd;" d="M165.000000 -231.000000L296.000000 -231.000000C410.000000 -231.000000,499.000000 -305.000000,499.000000 -398.000000C499.000000 -491.000000,416.000000 -563.000000,310.000000 -563.000000L70.000000 -563.000000C52.000000 -563.000000,43.000000 -556.000000,43.000000 -543.000000C43.000000 -529.000000,52.000000 -522.000000,70.000000 -522.000000L124.000000 -522.000000L124.000000 -41.000000L70.000000 -41.000000C52.000000 -41.000000,43.000000 -34.000000,43.000000 -21.000000C43.000000 -7.000000,52.000000 -0.000000,70.000000 -0.000000L303.000000 -0.000000C321.000000 -0.000000,331.000000 -7.000000,331.000000 -21.000000C331.000000 -34.000000,322.000000 -41.000000,303.000000 -41.000000L165.000000 -41.000000M165.000000 -272.000000L165.000000 -522.000000L314.000000 -522.000000C393.000000 -522.000000,458.000000 -466.000000,458.000000 -398.000000C458.000000 -329.000000,386.000000 -272.000000,299.000000 -272.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_100">
      <path style="fill-rule: evenodd;" d="M502.000000 -604.000000L407.000000 -604.000000C389.000000 -604.000000,380.000000 -597.000000,380.000000 -584.000000C380.000000 -570.000000,389.000000 -563.000000,407.000000 -563.000000L461.000000 -563.000000L461.000000 -327.000000C412.000000 -398.000000,354.000000 -431.000000,279.000000 -431.000000C160.000000 -431.000000,63.000000 -331.000000,63.000000 -208.000000C63.000000 -85.000000,160.000000 16.000000,279.000000 16.000000C354.000000 16.000000,414.000000 -19.000000,461.000000 -89.000000L461.000000 -0.000000L556.000000 -0.000000C574.000000 -0.000000,583.000000 -7.000000,583.000000 -21.000000C583.000000 -34.000000,574.000000 -41.000000,556.000000 -41.000000L502.000000 -41.000000M282.000000 -390.000000C383.000000 -390.000000,461.000000 -310.000000,461.000000 -206.000000C461.000000 -106.000000,381.000000 -25.000000,283.000000 -25.000000C183.000000 -25.000000,104.000000 -106.000000,104.000000 -208.000000C104.000000 -309.000000,183.000000 -390.000000,282.000000 -390.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_103">
      <path style="fill-rule: evenodd;" d="M440.000000 -334.000000C395.000000 -401.000000,342.000000 -431.000000,269.000000 -431.000000C156.000000 -431.000000,63.000000 -337.000000,63.000000 -221.000000C63.000000 -105.000000,156.000000 -10.000000,269.000000 -10.000000C341.000000 -10.000000,395.000000 -41.000000,440.000000 -107.000000L440.000000 22.000000C440.000000 90.000000,386.000000 145.000000,318.000000 145.000000L202.000000 145.000000C184.000000 145.000000,175.000000 152.000000,175.000000 165.000000C175.000000 179.000000,184.000000 186.000000,202.000000 186.000000L316.000000 186.000000C366.000000 186.000000,403.000000 169.000000,438.000000 132.000000C468.000000 100.000000,481.000000 69.000000,481.000000 28.000000L481.000000 -376.000000L535.000000 -376.000000C553.000000 -376.000000,562.000000 -383.000000,562.000000 -397.000000C562.000000 -410.000000,553.000000 -417.000000,535.000000 -417.000000L440.000000 -417.000000M272.000000 -390.000000C367.000000 -390.000000,440.000000 -316.000000,440.000000 -219.000000C440.000000 -126.000000,365.000000 -51.000000,272.000000 -51.000000C179.000000 -51.000000,104.000000 -126.000000,104.000000 -221.000000C104.000000 -315.000000,178.000000 -390.000000,272.000000 -390.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_105">
      <path style="fill-rule: evenodd;" d="M320.000000 -417.000000L161.000000 -417.000000C143.000000 -417.000000,134.000000 -410.000000,134.000000 -397.000000C134.000000 -383.000000,143.000000 -376.000000,161.000000 -376.000000L279.000000 -376.000000L279.000000 -41.000000L119.000000 -41.000000C101.000000 -41.000000,92.000000 -34.000000,92.000000 -21.000000C92.000000 -7.000000,101.000000 -0.000000,119.000000 -0.000000L480.000000 -0.000000C498.000000 -0.000000,508.000000 -7.000000,508.000000 -21.000000C508.000000 -34.000000,499.000000 -41.000000,480.000000 -41.000000L320.000000 -41.000000M318.000000 -624.000000L259.000000 -624.000000L259.000000 -520.000000L318.000000 -520.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_108">
      <path style="fill-rule: evenodd;" d="M320.000000 -604.000000L162.000000 -604.000000C144.000000 -604.000000,135.000000 -597.000000,135.000000 -584.000000C135.000000 -570.000000,144.000000 -563.000000,162.000000 -563.000000L279.000000 -563.000000L279.000000 -41.000000L119.000000 -41.000000C101.000000 -41.000000,92.000000 -34.000000,92.000000 -21.000000C92.000000 -7.000000,101.000000 -0.000000,119.000000 -0.000000L480.000000 -0.000000C498.000000 -0.000000,508.000000 -7.000000,508.000000 -21.000000C508.000000 -34.000000,499.000000 -41.000000,480.000000 -41.000000L320.000000 -41.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_110">
      <path style="fill-rule: evenodd;" d="M167.000000 -417.000000L92.000000 -417.000000C74.000000 -417.000000,65.000000 -410.000000,65.000000 -397.000000C65.000000 -383.000000,74.000000 -376.000000,92.000000 -376.000000L126.000000 -376.000000L126.000000 -41.000000L81.000000 -41.000000C62.000000 -41.000000,53.000000 -34.000000,53.000000 -21.000000C53.000000 -7.000000,62.000000 -0.000000,81.000000 -0.000000L212.000000 -0.000000C230.000000 -0.000000,239.000000 -7.000000,239.000000 -21.000000C239.000000 -34.000000,230.000000 -41.000000,212.000000 -41.000000L167.000000 -41.000000L167.000000 -294.000000C199.000000 -335.000000,209.000000 -346.000000,224.000000 -357.000000C252.000000 -380.000000,281.000000 -390.000000,319.000000 -390.000000C358.000000 -390.000000,377.000000 -384.000000,401.000000 -364.000000C426.000000 -343.000000,439.000000 -318.000000,439.000000 -288.000000L439.000000 -41.000000L405.000000 -41.000000C387.000000 -41.000000,378.000000 -34.000000,378.000000 -21.000000C378.000000 -7.000000,387.000000 -0.000000,405.000000 -0.000000L514.000000 -0.000000C532.000000 -0.000000,541.000000 -7.000000,541.000000 -21.000000C541.000000 -34.000000,532.000000 -41.000000,514.000000 -41.000000L480.000000 -41.000000L480.000000 -295.000000C480.000000 -372.000000,412.000000 -431.000000,323.000000 -431.000000C261.000000 -431.000000,225.000000 -412.000000,167.000000 -348.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_111">
      <path style="fill-rule: evenodd;" d="M300.000000 -431.000000C173.000000 -431.000000,72.000000 -331.000000,72.000000 -208.000000C72.000000 -83.000000,173.000000 16.000000,300.000000 16.000000C426.000000 16.000000,528.000000 -83.000000,528.000000 -205.000000C528.000000 -332.000000,428.000000 -431.000000,300.000000 -431.000000M300.000000 -390.000000C405.000000 -390.000000,487.000000 -310.000000,487.000000 -205.000000C487.000000 -106.000000,403.000000 -25.000000,300.000000 -25.000000C196.000000 -25.000000,113.000000 -106.000000,113.000000 -208.000000C113.000000 -309.000000,196.000000 -390.000000,300.000000 -390.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_112">
      <path style="fill-rule: evenodd;" d="M144.000000 -417.000000L49.000000 -417.000000C31.000000 -417.000000,22.000000 -410.000000,22.000000 -397.000000C22.000000 -383.000000,31.000000 -376.000000,49.000000 -376.000000L103.000000 -376.000000L103.000000 145.000000L49.000000 145.000000C31.000000 145.000000,22.000000 152.000000,22.000000 165.000000C22.000000 179.000000,31.000000 186.000000,49.000000 186.000000L242.000000 186.000000C260.000000 186.000000,269.000000 179.000000,269.000000 165.000000C269.000000 152.000000,260.000000 145.000000,242.000000 145.000000L144.000000 145.000000L144.000000 -106.000000C190.000000 -40.000000,246.000000 -10.000000,323.000000 -10.000000C446.000000 -10.000000,541.000000 -102.000000,541.000000 -221.000000C541.000000 -340.000000,447.000000 -431.000000,323.000000 -431.000000C247.000000 -431.000000,197.000000 -404.000000,144.000000 -335.000000M322.000000 -390.000000C423.000000 -390.000000,500.000000 -316.000000,500.000000 -219.000000C500.000000 -126.000000,420.000000 -51.000000,322.000000 -51.000000C223.000000 -51.000000,144.000000 -126.000000,144.000000 -221.000000C144.000000 -315.000000,223.000000 -390.000000,322.000000 -390.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_115">
      <path style="fill-rule: evenodd;" d="M432.000000 -385.000000C397.000000 -416.000000,352.000000 -431.000000,295.000000 -431.000000C197.000000 -431.000000,124.000000 -383.000000,124.000000 -318.000000C124.000000 -287.000000,142.000000 -257.000000,170.000000 -239.000000C198.000000 -222.000000,226.000000 -215.000000,300.000000 -207.000000C355.000000 -201.000000,382.000000 -194.000000,408.000000 -180.000000C435.000000 -165.000000,452.000000 -140.000000,452.000000 -117.000000C452.000000 -64.000000,386.000000 -25.000000,298.000000 -25.000000C213.000000 -25.000000,144.000000 -62.000000,144.000000 -108.000000L144.000000 -115.000000C144.000000 -128.000000,136.000000 -137.000000,124.000000 -137.000000C110.000000 -137.000000,103.000000 -128.000000,103.000000 -110.000000L103.000000 -27.000000C103.000000 -9.000000,110.000000 -0.000000,124.000000 -0.000000C137.000000 -0.000000,144.000000 -9.000000,144.000000 -27.000000L144.000000 -38.000000C186.000000 -1.000000,236.000000 16.000000,301.000000 16.000000C414.000000 16.000000,497.000000 -40.000000,497.000000 -116.000000C497.000000 -151.000000,478.000000 -185.000000,447.000000 -206.000000C415.000000 -227.000000,378.000000 -238.000000,317.000000 -245.000000C229.000000 -254.000000,223.000000 -256.000000,201.000000 -270.000000C180.000000 -282.000000,169.000000 -299.000000,169.000000 -315.000000C169.000000 -358.000000,225.000000 -390.000000,299.000000 -390.000000C375.000000 -390.000000,427.000000 -361.000000,432.000000 -316.000000C434.000000 -300.000000,441.000000 -293.000000,453.000000 -293.000000C466.000000 -293.000000,473.000000 -302.000000,473.000000 -320.000000L473.000000 -389.000000C473.000000 -408.000000,466.000000 -417.000000,453.000000 -417.000000C440.000000 -417.000000,432.000000 -406.000000,432.000000 -389.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHpcrr8r_116">
      <path style="fill-rule: evenodd;" d="M186.000000 -417.000000L186.000000 -536.000000C186.000000 -555.000000,180.000000 -563.000000,166.000000 -563.000000C152.000000 -563.000000,145.000000 -554.000000,145.000000 -536.000000L145.000000 -417.000000L71.000000 -417.000000C52.000000 -417.000000,43.000000 -410.000000,43.000000 -397.000000C43.000000 -383.000000,52.000000 -376.000000,71.000000 -376.000000L145.000000 -376.000000L145.000000 -107.000000C145.000000 -32.000000,206.000000 16.000000,300.000000 16.000000C385.000000 16.000000,499.000000 -22.000000,499.000000 -51.000000C499.000000 -61.000000,490.000000 -71.000000,480.000000 -71.000000C475.000000 -71.000000,472.000000 -70.000000,464.000000 -65.000000C425.000000 -42.000000,354.000000 -25.000000,298.000000 -25.000000C229.000000 -25.000000,186.000000 -58.000000,186.000000 -109.000000L186.000000 -376.000000L406.000000 -376.000000C424.000000 -376.000000,433.000000 -383.000000,433.000000 -397.000000C433.000000 -410.000000,424.000000 -417.000000,406.000000 -417.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_43">
      <path style="fill-rule: evenodd;" d="M409.000000 -230.000000L688.000000 -230.000000C702.000000 -230.000000,721.000000 -230.000000,721.000000 -250.000000C721.000000 -270.000000,702.000000 -270.000000,688.000000 -270.000000L409.000000 -270.000000L409.000000 -550.000000C409.000000 -564.000000,409.000000 -583.000000,389.000000 -583.000000C369.000000 -583.000000,369.000000 -564.000000,369.000000 -550.000000L369.000000 -270.000000L89.000000 -270.000000C75.000000 -270.000000,56.000000 -270.000000,56.000000 -250.000000C56.000000 -230.000000,75.000000 -230.000000,89.000000 -230.000000L369.000000 -230.000000L369.000000 50.000000C369.000000 64.000000,369.000000 83.000000,389.000000 83.000000C409.000000 83.000000,409.000000 64.000000,409.000000 50.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_50">
      <path style="fill-rule: evenodd;" d="M127.000000 -77.000000L233.000000 -180.000000C389.000000 -318.000000,449.000000 -372.000000,449.000000 -472.000000C449.000000 -586.000000,359.000000 -666.000000,237.000000 -666.000000C124.000000 -666.000000,50.000000 -574.000000,50.000000 -485.000000C50.000000 -429.000000,100.000000 -429.000000,103.000000 -429.000000C120.000000 -429.000000,155.000000 -441.000000,155.000000 -482.000000C155.000000 -508.000000,137.000000 -534.000000,102.000000 -534.000000C94.000000 -534.000000,92.000000 -534.000000,89.000000 -533.000000C112.000000 -598.000000,166.000000 -635.000000,224.000000 -635.000000C315.000000 -635.000000,358.000000 -554.000000,358.000000 -472.000000C358.000000 -392.000000,308.000000 -313.000000,253.000000 -251.000000L61.000000 -37.000000C50.000000 -26.000000,50.000000 -24.000000,50.000000 -0.000000L421.000000 -0.000000L449.000000 -174.000000L424.000000 -174.000000C419.000000 -144.000000,412.000000 -100.000000,402.000000 -85.000000C395.000000 -77.000000,329.000000 -77.000000,307.000000 -77.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmr10_51">
      <path style="fill-rule: evenodd;" d="M290.000000 -352.000000C372.000000 -379.000000,430.000000 -449.000000,430.000000 -528.000000C430.000000 -610.000000,342.000000 -666.000000,246.000000 -666.000000C145.000000 -666.000000,69.000000 -606.000000,69.000000 -530.000000C69.000000 -497.000000,91.000000 -478.000000,120.000000 -478.000000C151.000000 -478.000000,171.000000 -500.000000,171.000000 -529.000000C171.000000 -579.000000,124.000000 -579.000000,109.000000 -579.000000C140.000000 -628.000000,206.000000 -641.000000,242.000000 -641.000000C283.000000 -641.000000,338.000000 -619.000000,338.000000 -529.000000C338.000000 -517.000000,336.000000 -459.000000,310.000000 -415.000000C280.000000 -367.000000,246.000000 -364.000000,221.000000 -363.000000C213.000000 -362.000000,189.000000 -360.000000,182.000000 -360.000000C174.000000 -359.000000,167.000000 -358.000000,167.000000 -348.000000C167.000000 -337.000000,174.000000 -337.000000,191.000000 -337.000000L235.000000 -337.000000C317.000000 -337.000000,354.000000 -269.000000,354.000000 -171.000000C354.000000 -35.000000,285.000000 -6.000000,241.000000 -6.000000C198.000000 -6.000000,123.000000 -23.000000,88.000000 -82.000000C123.000000 -77.000000,154.000000 -99.000000,154.000000 -137.000000C154.000000 -173.000000,127.000000 -193.000000,98.000000 -193.000000C74.000000 -193.000000,42.000000 -179.000000,42.000000 -135.000000C42.000000 -44.000000,135.000000 22.000000,244.000000 22.000000C366.000000 22.000000,457.000000 -69.000000,457.000000 -171.000000C457.000000 -253.000000,394.000000 -331.000000,290.000000 -352.000000"></path>
    </g>
    <g transform="scale(0.009963,0.009963)" id="GLYPHcmsy10_1">
      <path style="fill-rule: evenodd;" d="M192.000000 -250.000000C192.000000 -279.000000,168.000000 -303.000000,139.000000 -303.000000C110.000000 -303.000000,86.000000 -279.000000,86.000000 -250.000000C86.000000 -221.000000,110.000000 -197.000000,139.000000 -197.000000C168.000000 -197.000000,192.000000 -221.000000,192.000000 -250.000000"></path>
    </g>
  </defs>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,0.245026 10.908966)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_51"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,11.757401 10.908966)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_43"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,27.697617 10.908966)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmr10_50"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,39.209991 10.908966)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHcmsy10_1"></use>
  </g>
  <g transform="matrix(1.600006,-0.000000,-0.000000,1.600006,47.179916 10.908966)" style="fill: rgb(0.000000%,0.000000%,0.000000%);">
    <use xlink:href="#GLYPHpcrr8r_67"></use>
    <use xlink:href="#GLYPHpcrr8r_108" x="6.000092"></use>
    <use xlink:href="#GLYPHpcrr8r_105" x="12.000185"></use>
    <use xlink:href="#GLYPHpcrr8r_112" x="18.000277"></use>
    <use xlink:href="#GLYPHpcrr8r_112" x="24.000369"></use>
    <use xlink:href="#GLYPHpcrr8r_105" x="30.000462"></use>
    <use xlink:href="#GLYPHpcrr8r_110" x="36.000554"></use>
    <use xlink:href="#GLYPHpcrr8r_103" x="42.000646"></use>
    <use xlink:href="#GLYPHpcrr8r_69" x="48.000739"></use>
    <use xlink:href="#GLYPHpcrr8r_110" x="54.000831"></use>
    <use xlink:href="#GLYPHpcrr8r_100" x="60.000923"></use>
    <use xlink:href="#GLYPHpcrr8r_80" x="66.001016"></use>
    <use xlink:href="#GLYPHpcrr8r_111" x="72.001108"></use>
    <use xlink:href="#GLYPHpcrr8r_105" x="78.001200"></use>
    <use xlink:href="#GLYPHpcrr8r_110" x="84.001293"></use>
    <use xlink:href="#GLYPHpcrr8r_116" x="90.001385"></use>
    <use xlink:href="#GLYPHpcrr8r_115" x="96.001477"></use>
  </g>
</svg></span>.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Contours" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Contours</span><span data-if="c" style="display:none">Contours</span><span data-if="cpp" style="display:none">Contours</span><span data-if="com" style="display:none">Contours</span><span data-if="dotnet" style="display:none">contours</span><span data-if="python" style="display:none">contours</span></code></b> (input_object)  </span><span>xld_cont(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HXLDCont.html">HXLDCont</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HXLDCont.html">HXLDCont</a></span><span data-if="c" style="display:none">Hobject</span></span>
</div>
<p class="pardesc">Input contours.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Algorithm" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Algorithm</span><span data-if="c" style="display:none">Algorithm</span><span data-if="cpp" style="display:none">Algorithm</span><span data-if="com" style="display:none">Algorithm</span><span data-if="dotnet" style="display:none">algorithm</span><span data-if="python" style="display:none">algorithm</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Algorithm for the fitting of circles.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'algebraic'</span>
    <span data-if="c" style="display:none">"algebraic"</span>
    <span data-if="cpp" style="display:none">"algebraic"</span>
    <span data-if="com" style="display:none">"algebraic"</span>
    <span data-if="dotnet" style="display:none">"algebraic"</span>
    <span data-if="python" style="display:none">"algebraic"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'ahuber'</span><span data-if="c" style="display:none">"ahuber"</span><span data-if="cpp" style="display:none">"ahuber"</span><span data-if="com" style="display:none">"ahuber"</span><span data-if="dotnet" style="display:none">"ahuber"</span><span data-if="python" style="display:none">"ahuber"</span>, <span data-if="hdevelop" style="display:inline">'algebraic'</span><span data-if="c" style="display:none">"algebraic"</span><span data-if="cpp" style="display:none">"algebraic"</span><span data-if="com" style="display:none">"algebraic"</span><span data-if="dotnet" style="display:none">"algebraic"</span><span data-if="python" style="display:none">"algebraic"</span>, <span data-if="hdevelop" style="display:inline">'atukey'</span><span data-if="c" style="display:none">"atukey"</span><span data-if="cpp" style="display:none">"atukey"</span><span data-if="com" style="display:none">"atukey"</span><span data-if="dotnet" style="display:none">"atukey"</span><span data-if="python" style="display:none">"atukey"</span>, <span data-if="hdevelop" style="display:inline">'geohuber'</span><span data-if="c" style="display:none">"geohuber"</span><span data-if="cpp" style="display:none">"geohuber"</span><span data-if="com" style="display:none">"geohuber"</span><span data-if="dotnet" style="display:none">"geohuber"</span><span data-if="python" style="display:none">"geohuber"</span>, <span data-if="hdevelop" style="display:inline">'geometric'</span><span data-if="c" style="display:none">"geometric"</span><span data-if="cpp" style="display:none">"geometric"</span><span data-if="com" style="display:none">"geometric"</span><span data-if="dotnet" style="display:none">"geometric"</span><span data-if="python" style="display:none">"geometric"</span>, <span data-if="hdevelop" style="display:inline">'geotukey'</span><span data-if="c" style="display:none">"geotukey"</span><span data-if="cpp" style="display:none">"geotukey"</span><span data-if="com" style="display:none">"geotukey"</span><span data-if="dotnet" style="display:none">"geotukey"</span><span data-if="python" style="display:none">"geotukey"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="MaxNumPoints" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MaxNumPoints</span><span data-if="c" style="display:none">MaxNumPoints</span><span data-if="cpp" style="display:none">MaxNumPoints</span><span data-if="com" style="display:none">MaxNumPoints</span><span data-if="dotnet" style="display:none">maxNumPoints</span><span data-if="python" style="display:none">max_num_points</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Maximum number of contour points used for the
computation (-1 for all points).</p>
<p class="pardesc"><span class="parcat">Default:
      </span>-1</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>MaxNumPoints &gt;= 3</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="MaxClosureDist" class="parname"><b><code><span data-if="hdevelop" style="display:inline">MaxClosureDist</span><span data-if="c" style="display:none">MaxClosureDist</span><span data-if="cpp" style="display:none">MaxClosureDist</span><span data-if="com" style="display:none">MaxClosureDist</span><span data-if="dotnet" style="display:none">maxClosureDist</span><span data-if="python" style="display:none">max_closure_dist</span></code></b> (input_control)  </span><span>real <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Maximum distance between the end points of a
contour to be considered as 'closed'.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0.0</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>MaxClosureDist &gt;= 0.0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="ClippingEndPoints" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ClippingEndPoints</span><span data-if="c" style="display:none">ClippingEndPoints</span><span data-if="cpp" style="display:none">ClippingEndPoints</span><span data-if="com" style="display:none">ClippingEndPoints</span><span data-if="dotnet" style="display:none">clippingEndPoints</span><span data-if="python" style="display:none">clipping_end_points</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Number of points at the beginning and at the end of the
contours to be ignored for the fitting.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>0</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>ClippingEndPoints &gt;= 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Iterations" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Iterations</span><span data-if="c" style="display:none">Iterations</span><span data-if="cpp" style="display:none">Iterations</span><span data-if="com" style="display:none">Iterations</span><span data-if="dotnet" style="display:none">iterations</span><span data-if="python" style="display:none">iterations</span></code></b> (input_control)  </span><span>integer <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Maximum number of iterations for the robust weighted
fitting.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>3</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>Iterations &gt;= 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="ClippingFactor" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ClippingFactor</span><span data-if="c" style="display:none">ClippingFactor</span><span data-if="cpp" style="display:none">ClippingFactor</span><span data-if="com" style="display:none">ClippingFactor</span><span data-if="dotnet" style="display:none">clippingFactor</span><span data-if="python" style="display:none">clipping_factor</span></code></b> (input_control)  </span><span>real <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">float</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Clipping factor for the elimination of outliers
(typical: 1.0 for Huber and 2.0 for Tukey).</p>
<p class="pardesc"><span class="parcat">Default:
      </span>2.0</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span>1.0, 1.5, 2.0, 2.5, 3.0</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>ClippingFactor &gt; 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Row" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Row</span><span data-if="c" style="display:none">Row</span><span data-if="cpp" style="display:none">Row</span><span data-if="com" style="display:none">Row</span><span data-if="dotnet" style="display:none">row</span><span data-if="python" style="display:none">row</span></code></b> (output_control)  </span><span>circle.center.y(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Row coordinate of the center of the circle.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Column" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Column</span><span data-if="c" style="display:none">Column</span><span data-if="cpp" style="display:none">Column</span><span data-if="com" style="display:none">Column</span><span data-if="dotnet" style="display:none">column</span><span data-if="python" style="display:none">column</span></code></b> (output_control)  </span><span>circle.center.x(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Column coordinate of the center of the circle.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Radius" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Radius</span><span data-if="c" style="display:none">Radius</span><span data-if="cpp" style="display:none">Radius</span><span data-if="com" style="display:none">Radius</span><span data-if="dotnet" style="display:none">radius</span><span data-if="python" style="display:none">radius</span></code></b> (output_control)  </span><span>circle.radius(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Radius of circle.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="StartPhi" class="parname"><b><code><span data-if="hdevelop" style="display:inline">StartPhi</span><span data-if="c" style="display:none">StartPhi</span><span data-if="cpp" style="display:none">StartPhi</span><span data-if="com" style="display:none">StartPhi</span><span data-if="dotnet" style="display:none">startPhi</span><span data-if="python" style="display:none">start_phi</span></code></b> (output_control)  </span><span>angle.rad(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Angle of the start point [rad].</p>
</div>
  <div class="par">
<div class="parhead">
<span id="EndPhi" class="parname"><b><code><span data-if="hdevelop" style="display:inline">EndPhi</span><span data-if="c" style="display:none">EndPhi</span><span data-if="cpp" style="display:none">EndPhi</span><span data-if="com" style="display:none">EndPhi</span><span data-if="dotnet" style="display:none">endPhi</span><span data-if="python" style="display:none">end_phi</span></code></b> (output_control)  </span><span>angle.rad(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Angle of the end point [rad].</p>
</div>
  <div class="par">
<div class="parhead">
<span id="PointOrder" class="parname"><b><code><span data-if="hdevelop" style="display:inline">PointOrder</span><span data-if="c" style="display:none">PointOrder</span><span data-if="cpp" style="display:none">PointOrder</span><span data-if="com" style="display:none">PointOrder</span><span data-if="dotnet" style="display:none">pointOrder</span><span data-if="python" style="display:none">point_order</span></code></b> (output_control)  </span><span>string(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Point order along the boundary.</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'negative'</span><span data-if="c" style="display:none">"negative"</span><span data-if="cpp" style="display:none">"negative"</span><span data-if="com" style="display:none">"negative"</span><span data-if="dotnet" style="display:none">"negative"</span><span data-if="python" style="display:none">"negative"</span>, <span data-if="hdevelop" style="display:inline">'positive'</span><span data-if="c" style="display:none">"positive"</span><span data-if="cpp" style="display:none">"positive"</span><span data-if="com" style="display:none">"positive"</span><span data-if="dotnet" style="display:none">"positive"</span><span data-if="python" style="display:none">"positive"</span></p>
</div>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">fit_circle_contour_xld</span><span data-if="c" style="display:none">fit_circle_contour_xld</span><span data-if="cpp" style="display:none">FitCircleContourXld</span><span data-if="com" style="display:none">FitCircleContourXld</span><span data-if="dotnet" style="display:none">FitCircleContourXld</span><span data-if="python" style="display:none">fit_circle_contour_xld</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameter values
are correct, and circles could be fitted to the input contours.  If
the input is empty the behavior can be set via
<a href="set_system.html"><code><span data-if="hdevelop" style="display:inline">set_system('no_object_result',&lt;Result&gt;)</span><span data-if="c" style="display:none">set_system("no_object_result",&lt;Result&gt;)</span><span data-if="cpp" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="com" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="dotnet" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="python" style="display:none">set_system("no_object_result",&lt;Result&gt;)</span></code></a>.  If necessary, an
exception is raised.
If the parameter <a href="#ClippingFactor"><i><code><span data-if="hdevelop" style="display:inline">ClippingFactor</span><span data-if="c" style="display:none">ClippingFactor</span><span data-if="cpp" style="display:none">ClippingFactor</span><span data-if="com" style="display:none">ClippingFactor</span><span data-if="dotnet" style="display:none">clippingFactor</span><span data-if="python" style="display:none">clipping_factor</span></code></i></a> is chosen too small, i.e.,
all points are classified as outliers, the error 3264 is raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="gen_contours_skeleton_xld.html"><span data-if="hdevelop" style="display:inline">gen_contours_skeleton_xld</span><span data-if="c" style="display:none">gen_contours_skeleton_xld</span><span data-if="cpp" style="display:none">GenContoursSkeletonXld</span><span data-if="com" style="display:none">GenContoursSkeletonXld</span><span data-if="dotnet" style="display:none">GenContoursSkeletonXld</span><span data-if="python" style="display:none">gen_contours_skeleton_xld</span></a></code>, 
<code><a href="lines_gauss.html"><span data-if="hdevelop" style="display:inline">lines_gauss</span><span data-if="c" style="display:none">lines_gauss</span><span data-if="cpp" style="display:none">LinesGauss</span><span data-if="com" style="display:none">LinesGauss</span><span data-if="dotnet" style="display:none">LinesGauss</span><span data-if="python" style="display:none">lines_gauss</span></a></code>, 
<code><a href="lines_facet.html"><span data-if="hdevelop" style="display:inline">lines_facet</span><span data-if="c" style="display:none">lines_facet</span><span data-if="cpp" style="display:none">LinesFacet</span><span data-if="com" style="display:none">LinesFacet</span><span data-if="dotnet" style="display:none">LinesFacet</span><span data-if="python" style="display:none">lines_facet</span></a></code>, 
<code><a href="edges_sub_pix.html"><span data-if="hdevelop" style="display:inline">edges_sub_pix</span><span data-if="c" style="display:none">edges_sub_pix</span><span data-if="cpp" style="display:none">EdgesSubPix</span><span data-if="com" style="display:none">EdgesSubPix</span><span data-if="dotnet" style="display:none">EdgesSubPix</span><span data-if="python" style="display:none">edges_sub_pix</span></a></code>, 
<code><a href="smooth_contours_xld.html"><span data-if="hdevelop" style="display:inline">smooth_contours_xld</span><span data-if="c" style="display:none">smooth_contours_xld</span><span data-if="cpp" style="display:none">SmoothContoursXld</span><span data-if="com" style="display:none">SmoothContoursXld</span><span data-if="dotnet" style="display:none">SmoothContoursXld</span><span data-if="python" style="display:none">smooth_contours_xld</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="gen_ellipse_contour_xld.html"><span data-if="hdevelop" style="display:inline">gen_ellipse_contour_xld</span><span data-if="c" style="display:none">gen_ellipse_contour_xld</span><span data-if="cpp" style="display:none">GenEllipseContourXld</span><span data-if="com" style="display:none">GenEllipseContourXld</span><span data-if="dotnet" style="display:none">GenEllipseContourXld</span><span data-if="python" style="display:none">gen_ellipse_contour_xld</span></a></code>, 
<code><a href="disp_circle.html"><span data-if="hdevelop" style="display:inline">disp_circle</span><span data-if="c" style="display:none">disp_circle</span><span data-if="cpp" style="display:none">DispCircle</span><span data-if="com" style="display:none">DispCircle</span><span data-if="dotnet" style="display:none">DispCircle</span><span data-if="python" style="display:none">disp_circle</span></a></code>, 
<code><a href="get_points_ellipse.html"><span data-if="hdevelop" style="display:inline">get_points_ellipse</span><span data-if="c" style="display:none">get_points_ellipse</span><span data-if="cpp" style="display:none">GetPointsEllipse</span><span data-if="com" style="display:none">GetPointsEllipse</span><span data-if="dotnet" style="display:none">GetPointsEllipse</span><span data-if="python" style="display:none">get_points_ellipse</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="fit_ellipse_contour_xld.html"><span data-if="hdevelop" style="display:inline">fit_ellipse_contour_xld</span><span data-if="c" style="display:none">fit_ellipse_contour_xld</span><span data-if="cpp" style="display:none">FitEllipseContourXld</span><span data-if="com" style="display:none">FitEllipseContourXld</span><span data-if="dotnet" style="display:none">FitEllipseContourXld</span><span data-if="python" style="display:none">fit_ellipse_contour_xld</span></a></code>, 
<code><a href="fit_line_contour_xld.html"><span data-if="hdevelop" style="display:inline">fit_line_contour_xld</span><span data-if="c" style="display:none">fit_line_contour_xld</span><span data-if="cpp" style="display:none">FitLineContourXld</span><span data-if="com" style="display:none">FitLineContourXld</span><span data-if="dotnet" style="display:none">FitLineContourXld</span><span data-if="python" style="display:none">fit_line_contour_xld</span></a></code>, 
<code><a href="fit_rectangle2_contour_xld.html"><span data-if="hdevelop" style="display:inline">fit_rectangle2_contour_xld</span><span data-if="c" style="display:none">fit_rectangle2_contour_xld</span><span data-if="cpp" style="display:none">FitRectangle2ContourXld</span><span data-if="com" style="display:none">FitRectangle2ContourXld</span><span data-if="dotnet" style="display:none">FitRectangle2ContourXld</span><span data-if="python" style="display:none">fit_rectangle2_contour_xld</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
